package tag34_27_08.aufgabeAutos.dozent;


public abstract class Auto <T extends Auto> implements Comparable<T> {
	
	protected String modell;
	protected int baujahr;
	
	public Auto(String modell, int baujahr) {
		super();
		this.modell = modell;
		this.baujahr = baujahr;
	}
	
	
	@Override
	public int compareTo(T auto2) {
		int erg = modell.compareTo(auto2.modell);
		
		if(erg!=0)
			return erg;
		
		return baujahr - auto2.baujahr;
	}
	

	@Override
	public String toString() {
		return getClass().getSimpleName() + ". Modell: " + modell + ", Baujahr " + baujahr;
	}

	@Override
	public int hashCode() {
		return modell.hashCode() + baujahr;
	}
	
	@Override
	public boolean equals(Object obj) {
		
		if( !(obj instanceof Auto) )
			return false;
		
		if( getClass() != obj.getClass() )
			return false;
		
		Auto vw2 = (Auto) obj;
		
		return modell.equals(vw2.modell) && baujahr==vw2.baujahr;
	}
	
}
